package com.lscl.rabbitmq;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Producer01_Hello {

    public static void main(String[] args) throws Exception {
        // 创建连接工厂,用于获取频道channel
        ConnectionFactory factory = new ConnectionFactory();

        // 设置RabbitMQ连接参数
        factory.setHost("192.168.40.132");
        factory.setPort(5672);
        factory.setUsername("guest");
        factory.setPassword("guest");
        factory.setVirtualHost("/");

        // 2.创建连接
        Connection connection = factory.newConnection();

        // 3.创建频道
        Channel channel = connection.createChannel();

        // 4.创建队列
        /*
            定义队列,如果没有此队列则创建,如果有则不创建
            queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments)

            queue:      队列的名称
            durable:    是否持久化队列(mq重启之后还在)
            exclusive:  是否独占(只能有一个消费者监听此队列,没有也不行)
            autoDelete: 是否自动删除(当没有Consumer时,自动删除掉)
            arguments:  其他参数
         */

        channel.queueDeclare("hello", true, false, false, null);


        String body = "hello world!";

        //5. 发送消息
        /*
            basicPublish(String exchange, String routingKey, BasicProperties props, byte[] body)

            exchange：交换机名称。简单模式下交换机会使用默认的 ""
            routingKey：路由名称
            props：配置信息
            body：发送消息数据
         */
        channel.basicPublish("", "hello", null, body.getBytes());


        //6.释放资源
        channel.close();
        connection.close();

    }

}
